package com.vlong.town.service.hotel;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.vlong.town.entity.hotel.HotelInfo;
import com.vlong.town.mapper.hotel.HotelInfoMapper;

/**
 * 酒店美食信息业务实现类
 * @author Assassin
 */
@Service
public class HotelInfoService {

    // Fields

    @Autowired
    private HotelInfoMapper hotelInfoMapper;// 酒店美食信息Mapper接口

    // Methods

    /**
     * 添加酒店美食信息
     * @param townId 村镇Id
     * @param title 酒店美食标题
     * @param content 酒店美食内容
     * @param desc 酒店美食简介
     * @param thumbnail 缩略图
     * @param feature 酒店美食特征
     * @param address 酒店美食位置
     * @param lng 酒店美食经度
     * @param lat 酒店美食纬度
     */
    @Transactional
    public void add(Long townId,Integer type,String title, String content, String desc, String thumbnail, String feature, String address, Float lng, Float lat) {
        HotelInfo hotelInfo = new HotelInfo();
        hotelInfo.setTownId(townId);
        hotelInfo.setState(1);
        hotelInfo.setType(type);
        hotelInfo.setStatus(2);
        hotelInfo.setTitle(title);
        hotelInfo.setContent(content);
        hotelInfo.setDesc(desc);
        hotelInfo.setThumbnail(thumbnail);
        hotelInfo.setFeature(feature);
        hotelInfo.setAddress(address);
        hotelInfo.setLng(lng);
        hotelInfo.setLat(lat);
        Long cuTime = System.currentTimeMillis();
        hotelInfo.setCreateTime(cuTime);
        hotelInfo.setUpdateTime(cuTime);
        this.hotelInfoMapper.insert(hotelInfo);
    }

    /**
     * 逻辑删除酒店美食信息
     * @param hotelId 主键值
     */
    @Transactional
    public void delete(Long hotelId) {
        this.hotelInfoMapper.delete(hotelId);
    }

    /**
     * 修改酒店美食信息
     * @param hotelId 酒店美食Id
     * @param title 酒店美食标题
     * @param content 酒店美食内容
     * @param desc 酒店美食简介
     * @param thumbnail 缩略图
     * @param feature 酒店美食特征
     * @param address 酒店美食位置
     * @param lng 酒店美食经度
     * @param lat 酒店美食纬度
     */
    @Transactional
    public void update(Long hotelId,Integer type,String title, String content, String desc, String thumbnail, String feature, String address, Float lng, Float lat,Integer status,String reason) {
        HotelInfo hotelInfo = new HotelInfo();
        hotelInfo.setHotelId(hotelId);
        hotelInfo.setTitle(title);
        hotelInfo.setType(type);
        hotelInfo.setContent(content);
        hotelInfo.setDesc(desc);
        hotelInfo.setThumbnail(thumbnail);
        hotelInfo.setFeature(feature);
        hotelInfo.setAddress(address);
        hotelInfo.setLng(lng);
        hotelInfo.setLat(lat);
        hotelInfo.setStatus(status);
        hotelInfo.setUpdateTime(System.currentTimeMillis());
        hotelInfo.setReason(reason);
        this.hotelInfoMapper.update(hotelInfo);
    }

    /**
     * 主键查询酒店美食信息
     * @param hotelId 酒店美食Id
     * @return
     */
    @Transactional(readOnly = true)
    public HotelInfo queryById(Long hotelId) {
        return this.hotelInfoMapper.selectById(hotelId);
    }

    /**
     * 查询酒店美食信息
     * @param title 酒店美食标题
     * @param content 酒店美食内容
     * @param desc 酒店美食简介
     * @return List<HotelInfo>
     */
    @Transactional(readOnly = true)
    public List<HotelInfo> queryList(String title, Integer type,String content, String desc,Integer status) {
        HotelInfo hotelInfo = new HotelInfo();
        hotelInfo.setTitle(title);
        hotelInfo.setContent(content);
        hotelInfo.setDesc(desc);
        hotelInfo.setType(type);
        hotelInfo.setStatus(status);
        return this.hotelInfoMapper.selectList(hotelInfo);
    }

}
